# train
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 --master_port 66666 train.py --config_file configs/VehicleID/vit_base.yml MODEL.DIST_TRAIN True

/*
这条命令是用来启动分布式训练的，即同时使用多张GPU来加速训练过程。

CUDA_VISIBLE_DEVICES=0,1,2,3:
    这是一个环境变量。它告诉程序：“在这台服务器上，你只能‘看到’并且使用编号为 0, 1, 2, 3 的这四张GPU”。即使服务器上有8张      GPU，这个程序也只会使用这指定的4张。

python -m torch.distributed.launch:
    这是 PyTorch 框架提供的用于启动分布式训练的官方工具。它会自动设置好所有必要的环境变量和通信，帮你管理多个并行的训练进      程。

--nproc_per_node=4:
    这是 launch 工具的一个参数，意思是“在当前这台机器（node）上，启动 4 个 进程”。因为你指定了4张GPU，所以这里也启动4个进     程，通常是一个进程控制一张GPU。

--master_port 66666:
    在分布式训练中，需要有一个“主进程”（master）来协调其他所有进程。这个参数指定了它们之间通信用的网络端口号。66666 是一个     随便选的、当前未被占用的端口号。

train.py:
    这是要执行的核心训练脚本。前面的所有部分都是在为运行这个脚本做环境准备。

--config_file configs/VehicleID/vit_base.yml:
    这是一个传递给 train.py 脚本的参数。--config_file 告诉脚本去哪里找配置文件。这个 vit_base.yml 文件里定义了这次训练的     所有超参数，比如学习率、模型大小、用哪个数据集等等。

MODEL.DIST_TRAIN True:
    这很可能是一个覆盖配置文件的参数。它直接在命令行里告诉 train.py 脚本：“启用分布式训练模式 (DIST_TRAIN 设为 True)”        使配置文件里写的是False，命令行里的指令优先级更高。
*/


# test
python test.py --config_file configs/VehicleID/vit_base.yml MODEL.DIST_TRAIN False MODEL.DEVICE_ID "('0')"

/*
这条命令是用来在训练完成后评估模型性能的。

python test.py:
    直接用标准的 python 命令来运行 test.py 脚本。因为测试通常不需要多张GPU并行，所以没有用 torch.distributed.launch。

--config_file configs/VehicleID/vit_base.yml:
    和训练时一样，告诉测试脚本使用相同的配置文件，这样它才知道要加载哪个模型结构、在哪个测试集上进行评估。

MODEL.DIST_TRAIN False:
    明确告诉脚本：“现在不要用分布式模式”。

MODEL.DEVICE_ID "('0')":
    指定测试在哪张GPU上进行。这里 ('0') 表示使用编号为 0 的那张GPU。
*/